#include <iostream>

#include <pthread.h>

#include <unistd.h>

#include <thread>

__thread int _stat = 100;

//>>转化16进制的函数
std::string ToHex(const pthread_t &_tid)
{
    char _buffer[64];
    snprintf(_buffer, sizeof(_buffer), "0x%lx", _tid);
    return _buffer;
}

//>> 线程加载函数
void *Func(void *_data)
{
    while (true)
    {
        std::cout << "我是子线程,我的id是" << ToHex(pthread_self()) << ", 我的局部存储数据是" << _stat << std::endl;
        _stat++;
        sleep(2);
    }
}

int main()
{
    //>>线程创造
    pthread_t _pthread;
    if (pthread_create(&_pthread, nullptr, Func, (void *)"hello world") != 0)
    {
        std::cout << "创造线程失败！" << std::endl;
        exit(1);
    }
    //>> 主线程加载
    while (true)
    {
        std::cout << "我是主线程~~" << ",我的全局变量数据是:" << _stat << std::endl;

        sleep(2);
    }

    //>> 线程等待
    pthread_join(_pthread, nullptr);

       return 0;
}